【新功能上线】mooncakes.io:新一代MoonBit包管理平台来啦!!
mooncakes.io正式上线啦!!
mooncakes.io作为一个中心化的MoonBit包管理平台。在这里,用户可以轻松上传分享、使用以及探索各种MoonBit模块。
moon
集成了与 mooncakes.io 进行交互的命令,让用户可以免去手动下载和配置依赖的困扰。与其他大多数包管理器不同,MoonBit的依赖解析使用与Go类似的最小版本选择算法,可以精确地确定需要构建哪些依赖,不会隐式地升级新版本,从而为开发者打造稳定可重现的构建体验。<username>/<package_name>
。在 mooncakes.io 发布的模块版本根据语义化版本2.0.0定义,月兔将根据兼容性解析具体的版本。mooncakes.io
会自动构建该模块的文档页面。我们希望这样一个中心化平台能为用户提供简单、一致的使用体验。相关工具链
MoonBit构建系统 moon
集成了与mooncakes.io进行交互的命令。
moon login
:登录到 mooncakes.iomoon publish
:发布一个包到 mooncakes.io。其中版本号格式按照语义化版本2.0.0进行校验,对于同一个模块,每次发布的版本号必须单调递增。moon add
:添加一个依赖。例如 moon add Yoorkin/example/list@0.1.2,如果不指定版本 moon add Yoorkin/example/list 将会添加最新版本。构建系统会执行依赖解析,找到所有需要依赖的模块及其版本,然后从 mooncakes.io 下载相关模块到当前模块,同时自动更新 moon.mod.json。moon remove
:移除一个依赖
moon tree
:以树状结构列出所有依赖
moon update
:更新本地索引。索引中记录了 mooncakes.io 上所有的包的版本及其依赖信息。索引文件使用 git进行管理,因此在完成第一次更新之后,后续的 moon update 便可只进行增量更新,这需要您的环境中有 git 命令。
moon install
:按照 moon.mod.json 中 deps 字段自动安装所有依赖。
moondoc文档生成工具
moondoc
是一个从MoonBit项目收集文档注释并生成文档信息的工具。在生成文档时,moondoc
不仅分析顶层声明中的类型信息,还提供指向相应类型文档的链接。
用户可以在任何顶层的fn
、let
、enum
、trait
等结构前添加以///
开头的文档注释,这些注释遵循Markdown格式。如下图所示:
self
参数带下划线的类型Stack
,便可以跳转到Stack
类型的文档。如下图所示:构建系统 moon
中已经集成了用于本地文档生成的命令moon doc
以及用于文档预览的命令 moon doc --serve
。
所有依赖管理、模块上传、文档的构建和预览都可以通过构建系统完成。接下来是一个简单的使用流程:
在使用 mooncakes.io 之前需要确保安装了MoonBit工具链。
工具链下载链接:
https://www.moonbitlang.cn/download/
步骤1:配置mooncakes.io
(注意:如果你只是想使用 mooncakes.io 上的第三方包,而不是想发布一个包,可以跳过登录这一步骤。)
在控制台输入
moon login
,在浏览器中打开输出提示的链接,在这一步我们只会要求获取您的GitHub账号的公开信息。
$ moon login
Please open the following URL in your browser and paste the code.
https://github.com/login/oauth/authorize?client_id=f324b352b4d737e98223
>
复制login code,粘贴回控制台
当显示如下内容,即表示登录成功
$ moon login
Please open the following URL in your browser and paste the code.
https://github.com/login/oauth/authorize?client_id=f324b352b4d737e98223
> xxxxxxxxxxxxxxxxxxxxx
API token saved in ~/.moon/credentials.json
步骤2:更新索引
在控制台输入 moon update
,这个命令用于更新本地索引信息。
当命令执行成功后,输出类似如下:
$ moon update
Cloning into '$HOME/.moon/registry/index'...
remote: Enumerating objects: 404, done.
remote: Counting objects: 100% (404/404), done.
remote: Compressing objects: 100% (301/301), done.
remote: Total 404 (delta 138), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (404/404), 32.18 KiB | 2.92 MiB/s, done.
Resolving deltas: 100% (138/138), done.
Registry index cloned successfully
步骤3:从mooncakes添加想要的模块
Yoorkin/example/list
这个模块为例,执行moon add
添加这个模块的最新版本到依赖中:moon add Yoorkin/example/list
moon.mod.json
的依赖项deps
。步骤4:使用刚刚添加的依赖进行开发
Yoorkin/example/list
这个package,这里给它取一个别名list。of_array
和reverse
函数反转并打印一个array
。reverse_array
。在控制台输入moon run main
执行代码,效果如下:步骤5:上传新的模块
如果准备好发布一个模块了,使用moon publish
即可上传:
moon doc --serve
在本地构建和预览效果:详细文档
关于如何使用mooncakes.io的更多信息,请参阅mooncakes.io上提供的详细文档。
链接:https://mooncakes.io/docs/#/guide
mooncakes.io的发布是推动MoonBit生态系统向前发展的关键一步,虽然这只是一个新的开始。接下来,我们会不断优化与改进mooncakes.io,以提供给用户更友好的体验。我们期待你的试用与反馈,你的建议是我们不断前行的动力,帮助我们不断地完善与改进。
同时,我们诚邀所有对MoonBit感兴趣的用户加入这个充满活力的社区。无论你是上传自己开发的包,还是为现有的包提供改进和建议,你的每一次贡献都将对mooncakes.io的生态系统产生积极影响。
快来开启你的mooncakes.io之旅,共同构建一个不断成长的mooncakes.io社区!
官方平台账号,欢迎扫码关注
MoonBit
知乎|@张宏波 / @MoonBit
小红书|MoonBit月兔
Twitter丨@Moonbitlang
Bilibili丨MoonBit月兔
MoonBit用户交流群|添加小助手moonbit_helper